package com.mogujie.tt.adapter; import com.mogujie.tt.log.Logger; import com.mogujie.tt.utils.CommonUtil; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView.LayoutParams; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; /** * @Description 表情适配器 * @author Nana * @date 2014-4-16 */ public class EmoGridViewAdapter extends BaseAdapter { private Context context = null; private int[] emoResIds = null; private static Logger logger = Logger.getLogger(EmoGridViewAdapter.class); public EmoGridViewAdapter(Context cxt, int[] ids) { this.context = cxt; this.emoResIds = ids; } @Override public int getCount() { return emoResIds.length; } @Override public Object getItem(int position) { return emoResIds[position]; } @Override public long getItemId(int position) { return emoResIds[position]; } @Override public View getView(int position, View convertView, ViewGroup parent) { try { GridViewHolder gridViewHolder = null; if (null == convertView && null != context) { gridViewHolder = new GridViewHolder(); convertView = gridViewHolder.layoutView; if (convertView != null) { convertView.setTag(gridViewHolder); } } else { gridViewHolder = (GridViewHolder) convertView.getTag(); } if (null == gridViewHolder || null == convertView) { return null; } gridViewHolder.faceIv.setImageBitmap(getBitmap(position)); if (position == emoResIds.length - 1) { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.topMargin = CommonUtil.getElementSzie(context) / 3; gridViewHolder.faceIv.setLayoutParams(params); } return convertView; } catch (Exception e) { logger.e(e.getMessage()); return null; } } private Bitmap getBitmap(int position) { Bitmap bitmap = null; try { bitmap = BitmapFactory.decodeResource(context.getResources(), emoResIds[position]); } catch (Exception e) { logger.e(e.getMessage()); } return bitmap; } public class GridViewHolder { public LinearLayout layoutView; public ImageView faceIv; public GridViewHolder() { try { LayoutParams layoutParams = new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); layoutView = new LinearLayout(context); faceIv = new ImageView(context); layoutView.setLayoutParams(layoutParams); layoutView.setOrientation(LinearLayout.VERTICAL); layoutView.setGravity(Gravity.CENTER); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( CommonUtil.getElementSzie(context), CommonUtil.getElementSzie(context)); params.gravity = Gravity.CENTER; layoutView.addView(faceIv, params); } catch (Exception e) { logger.e(e.getMessage()); } } } }